“Sokoban” is Japanese for “warehouse keeper”. The object of the game is to rearrange the money bags to their destination positions on each level. Winning the game involves solving all the levels.
The man responds to the mouse or keyboard. Keyboard movement uses the arrow keys, the numeric keypad, or i-j-k-l. K, comma, spacebar, 5, 2, and 0 all move the man down. Clicking with the mouse in a neighbor square has the same effect as pressing keys. Each move must be either vertical or horizontal; no diagonal moves are allowed.
Holding down shift while pressing one of the directional keys or clicking in the same row or column as the man will make the man move in that direction as far as he can.
The man can move the money bags by pushing them in front of himself, one at a time. If you push a bag into a corner, it is stuck. When you mess up (which will happen more than you think) you can restart the level, or undo the last push. Undo is supported for every push on the current level. To get an idea of the general strategy, try out the level 1 demo (under the File menu). You can speed up the demo by holding down the option key, or stop it by pressing command-period.
If you click the mouse somewhere more than one square away, the man will move to where you clicked if there is a path. When you click somewhere you can’t go, JSokoban will play the “bonk” sound. You can drag the man around, too.
Pressing the diagonal keys (7, 9, 1, and 3 or U, O, M, and period) is equivalent to clicking on the analogous square immediately diagonal from the man.
Requirements
JSokoban should run under System 6.0.7 or later in color, grayscale or B&W. For best display of the graphics, use 8-bit color or better. My goal is to make JSokoban support as many setups as possible, so if it doesn’t work on your Mac, let me know!
Several people have contributed to the development of this game. Charles Turner explained many Mac pascal concepts to me, including type-casting. Ryan Schmidt demanded B&W/System 6 support, so I had to oblidge him. Both Ryan and Charles had good suggestions for new features or better ways of doing old things. (And bug reports too!)
Jason Best created the awesome graphics that replaced my clunky originals.
I would also like to thank my loyal beta testers Ryan Schmidt, Jason Best, Ben Judson, and Charles Turner.
JSokoban was written in THINK Pascal 4.0.2.
How to Contact Me
Please send me any comments, suggestions, or (heaven forbid) bug reports. I can be reached at the following addresses:
Internet:
JasonTownsend@mail.utexas.edu
Snail mail:
Jason Townsend
6306 Sunview
San Antonio, TX 78238
JSokoban 1.0b9 changes:
• Improved Finder icons (with proper hilighting).
• In color, the man’s feet are now visible when he is on a destination.
• Better bag icon in B&W with dollar sign.
• The man faces different directions based on his surroundings at level start.
• JSokoban responds to dragging and dropping or double clicking level files in the Finder.
• Remembers window positions for external files and default levels independently.
• Slowed down the demo to make it easier to follow.
• You can drag the man around with the mouse.
JSokoban 1.0b8 changes:
• Preferences code now works in System 6.0.7.
• Desk accessories now work properly when opened into JSokoban (that is, when in Unifinder 6.0.7, or when holding down Option and selecting the DA in MultiFinder 6.0.7). Previously, DAs opened this way would not get mouse clicks.
• Command period in the Go to Level dialog is now equivalent to clicking Cancel.
• Added new “dissolve” redraw and improved About box (courtesy of Ryan Schmidt).
• Tweaked B&W graphics some more.
• New bag and man graphics (that point in four directions). Better display on grayscale monitors.
• Pathfinding does not balk on possible paths, or crash on impossible paths.
• Better error handling; deals with full or locked startup disks, multiple open copies of JSokoban all trying to access the Preferences file, preferences version.
• Sound now works (in one asynchronous channel) on machines without the Apple Sound Chip (like the Classic).
• Menu bar does not redraw every time you click it (this used to create an annoying delay and visual effect on some machines).
• Better handling of level resources (auto max level sensing); moved to ‘LEVL’ type to avoid conflicts with other ‘TEXT’ resources.
• Option to resize the window from center or top left when switching levels, center window command. (If the window comes up offscreen, try this command to fix it.)
• Much faster updates in B&W only Macs with a single CopyBits from a constantly updated offscreen bitmap.
• Holding down shift while moving a square (clicking in the same row or column as the man or typing a key) makes the man move as far as possible in that direction.
• Added the 35 Extra levels after the original 50 in the ‘Extra’ file.
• Converts 1.0b7 preferences file to new format and maintains old settings.
• Option for using external sound/graphics/levels files.
• Lots of other bug fixes, improvements, and refinements.
Known problems in 1.0b9:
• On B&W only Macs, if the level is reset while part of the window is offscreen, it either displays a weird pattern or some other part of the screen when brought back onscreen until the next update.
• The Edit menu is not enabled for desk accessories opened into JSokoban’s memory partition.
Priorities before 1.0 goes final:
• Check that saved window position is not offscreen before moving the window from default position.
• Demo in the background.
• Chunk updates in color.
Future plans for JSokoban: (in approximate order of priority)
• Better pathfinding (no more taking the long way around).
• Move/push counting with low move/push records. (like MacSokoban)
• Animation.
• Simple balloon help/online help.
• Level group files, import/export to text (like MacSokoban).
• Level editor.
• Levels that are unique to JSokoban.
• Option to change movement key settings (not sure if this is necessary).